package com.example.java_chatroom.component;

import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.util.UUID;

public class PasswordTools {
    public static String encrypt(String password) {
        // 1. 产生盐值
        String salt = UUID.randomUUID().toString().replace("-", "");
        // 2. 使用 (盐值 + 明文密码) 得到加密的密码
        return encrypt(password, salt);
    }

    public static String encrypt(String password, String salt) {
        String finalPassword = DigestUtils.md5DigestAsHex((salt + password).getBytes());
        return salt + "$" + finalPassword;
    }

    public static boolean decrypt(String password, String dbPassword) {
        boolean result = false;
        if (StringUtils.hasLength(password)
                && StringUtils.hasLength(dbPassword)
                && dbPassword.length() == 65
                && dbPassword.contains("$")) {
            // 参数正确
            // 1. 得到盐值
            String[] passwordArr = dbPassword.split("\\$");
            // 1.1 盐值
            String salt = passwordArr[0];
            // 2. 生成验证密码的加盐加密密码
            String checkPassword = encrypt(password, salt);
            if (dbPassword.equals(checkPassword)) {
                result = true;
            }
        }
        return result;
    }
}
